package com.ruoyi.worker.mapper;

import com.ruoyi.worker.domain.OperationalRequirementsTable;
import com.ruoyi.worker.domain.OrganizationStructure;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @ClassName OperationalManagementMapper
 * @Description 运营管理mapper层
 * @Author leizhang
 * Date 2021/10/12 3:41 下午
 * @Version 1.0
 **/
@Mapper
public interface OperationalManagementMapper {
    /**
     * @Description :设备信息获取
     * @Author : leizhang
     * @Date 3:54 下午 2021/10/12
     * @param requestParams
     * @return void
     **/
    List<Map<String,Object>> getEquipments(Map<String, Object> requestParams);
    /**
     * @Description :获取组织结构信息
     * @Author : leizhang
     * @Date 4:04 下午 2021/10/12
     * @param requestParams
     * @return java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     **/
    List<Map<String,Object>> getDepNodes(Map<String, Object> requestParams);

    /**
     * @Description : 运营需求单列表获取
     * @Author : leizhang
     * @Date 9:17 下午 2021/10/15
     * @param requestParam
     * @return java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     **/
    List<Map<String, Object>> getOperationalList(Map<String, Object> requestParam);

    /**
     * @Description : 获取运行需求人员配置信息
     * @Author : leizhang
     * @Date 11:27 下午 2021/10/15
     * @param id
     * @return java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     **/
    List<Map<String,Object>> getOperationalStraffing(int id);

    /**
     * @Description : 运营需求单主表信息获取
     * @Author : leizhang
     * @Date 8:37 上午 2021/10/17
     * @param requestParam
     * @return java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     **/
    List<Map<String,Object>> getOperationalInfo(Map<String,Object> requestParam);

    /**
     * @Description : 运营需求表信息修改
     * @Author : leizhang
     * @Date 10:30 下午 2021/10/17
     * @param requestParam
     * @return void
     **/
    void updateOperationalInfo(Map<String, Object> requestParam);

    /**
     * @Description : 删除人员配置信息
     * @Author : leizhang
     * @Date 10:53 下午 2021/10/17
     * @param operationalId
     * @return void
     **/
    void delOperationalDetailInfo(int operationalId);

    /**
     * @Description : 审核主表状态更新
     * @Author : leizhang
     * @Date 10:09 上午 2021/10/18
     * @param requestParam
     * @return void
     **/
    void updateAuditStatus(Map<String, Object> requestParam);

    /**
     * @Description : 运营需求表主表信息删除
     * @Author : leizhang
     * @Date 2:44 下午 2021/10/18
     * @param ids
     * @return void
     **/
    void delOperationalInfo(List<Integer> ids);

    /**
     * @Description : 运营需求表明细表删除
     * @Author : leizhang
     * @Date 2:44 下午 2021/10/18
     * @param ids
     * @return void
     **/
    void delOperationalDetailInfos(List<Integer> ids);

    /**
     * @Description : 删除
     * @Author : leizhang
     * @Date 3:39 下午 2021/10/18
     * @param ids
     * @return void
     **/
    void delOperationalLog(List<Integer> ids);

    /**
     * @Description : 审核记录删除
     * @Author : leizhang
     * @Date 3:42 下午 2021/10/18
     * @param ids
     * @return void
     **/
    void delOperationalAudit(List<Integer> ids);

    /**
     * @Description : 用工需求新增
     * @Author : leizhang
     * @Date 9:51 下午 2021/10/18
     * @param workNeed
     * @return void
     **/
    void addWorkerNeed(Map<String, Object> workNeed);

    /**
     * 更新用工需求预测需求人数
     * @param dto: {id:主键,demandNumber:实际用工人数}
     * @return int 影响的行数
     * @author Hush.
     * @since 2021/11/29 19:19
     */
    int updateDemandNumber(Map<String, Object> dto);

    /**-----------运营---------------**/
    /**
     * 新增运营需求(二期)
     *
     * @param operationalRequirementsTable 运营需求(二期)
     * @return 结果
     */
    public int insertOperationalRequirementsTable(OperationalRequirementsTable operationalRequirementsTable);

    /**
     * 修改运营需求(二期)
     *
     * @param operationalRequirementsTable 运营需求(二期)
     * @return 结果
     */
    public int updateOperationalRequirementsTable(Map<String,Object> operationalRequirementsTable);

    /**
     * 查询运营需求(二期)列表
     *
     * @param operationalRequirementsTable 运营需求(二期)
     * @return 运营需求(二期)集合
     */
    public List<OperationalRequirementsTable> selectOperationalRequirementsTableList(OperationalRequirementsTable operationalRequirementsTable);

    public List<OperationalRequirementsTable> selectOperationalRequirements(OperationalRequirementsTable operationalRequirementsTable);

    int getWorkerNumber(@Param("requestParam") Map<String, Object> requestParam);

    /**
     * 查询运营需求(二期)
     *
     * @param id 运营需求(二期)主键
     * @return 运营需求(二期)
     */
    public OperationalRequirementsTable selectOperationalRequirementsTableById(Integer id);

    /**
     * 删除运营需求(二期)
     *
     * @param id 运营需求(二期)主键
     * @return 结果
     */
    public int deleteOperationalRequirementsTableById(Long id);

    public void updateOperationalStatusById(OperationalRequirementsTable operationalRequirementsTable);

    public Long getAttendanceInformationOfTerm(Map<String,Object> requestParam);
}
